package jmine.tec.script;

import java.util.Collection;

/**
 * Scripts composed of other scripts
 * 
 * @author takeshi
 */
public interface ScriptDefinition {

    /**
     * Name of the source code file
     * 
     * @return String
     */
    String name();

    /**
     * Some (unique) identifier
     * 
     * @return Object
     */
    Object identifier();

    /**
     * A version of the script
     * 
     * @return Object
     */
    Object version();

    /**
     * The script body in String
     * 
     * @return {@link String}
     */
    String scriptBody();

    /**
     * Other scripts that should be considered as traits of this one
     * 
     * @return {@link Collection}
     */
    Collection<? extends ScriptDefinition> traits();

}
